今天來整理一下ServletConfig & ServletContent的用法
簡單來說就是預設參數
可以用來設定一些參數的方式
以先前的經驗來說,大部分還是會把這些參數設定在DB裡面
但預設參數的機制
可以避免以後要修改內容可以不需改程式(Hard Code),直接調整web.xml
定義:
為Servlet自己所擁有,所以必須在init()才會取得ServletConfig物件
即不能在Constructor去使用它
若要在JSP使用,必須先在該Servlet存取
表示方法:
可在web.xml(DD)裡設定,也可以在Servlet裡設定
在這先demo在DD的寫法
web.xml
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.servlet.LoginServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>Zarek</param-value>
</init-param>
</servlet>
因為ServletConfig是屬於Servlet的,所以必須寫在Servlet的tag裡面
只有LoginServlet才能讀取
且參數的tag為init-param
而在Servlet要讀取這個參數
有兩種方式
MyFirstServlet.java
String secretName = getServletConfig().getInitParameter("name");
//String secretName = getInitParameter("name"); 另一種方式
定義:
有點類似全域變數的概念
只要整個Web application都可以存取
而非針對一個Servlet,且也可以在JSP直接使用
表示方法:
由於是整個web都可以呼叫,因此只設定在web.xml
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0" metadata-complete="true">
<context-param>
<param-name>ShowName</param-name>
<param-value>Chung</param-value>
</context-param>
在ServletContent裡,因是共用的概念
所以必須要放在web-app的tag裡面,而不是Servlet裡
另外參數的tag名稱開頭為context
至於Servlet裡要取出該值為
MyFirstServlet.java
String secretName = getServletContext().getInitParameter("ShowName");
一個Servlet會有一個ServletConfig
整個web應用程式只會有一個ServletContext
明天會利用今天所提到的
加上getParameter()和setAttribute去取出相關的值
用先前的的範例在稍作加工
改寫簡易版小登入的功能